package item;

import static javax.persistence.GenerationType.SEQUENCE;

import java.util.ArrayList;
import java.util.List;
import java.util.Collections;
import java.util.Comparator;



import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;


public class Itemstrackingsystem {
	

	private int id;
	
	
	private String name;
	private List<itsProjects> projects = new ArrayList<itsProjects>();
	

	private List<itsUsers> allUsers = new ArrayList<itsUsers>();

	// Definiendo el comparador para la busqueda de los proyectos	
    Comparator<itsProjects> c = new Comparator<itsProjects>() {
        public int compare(itsProjects u1, itsProjects u2) {
          return u1.getProjectName().compareTo(u2.getProjectName());
        }
      };

     // Metodo que permite registrar un usuario      
	public itsUsers registerUser(String name, String email, String pass){
		itsUsers aUser = new itsUsers();
		aUser.setDatosUser(name,email,pass);
		allUsers.add(aUser);
		return aUser;
	}

	//metodo para crear un nuevo proyecto
	public itsProjects createProject(String name){
		itsProjects aProject = new itsProjects();
		aProject.addNameToProjects(name);
		//Evito duplicados:
		int i = getAproject(aProject);
		if(i<0){			
			projects.add(aProject);	
			return aProject;
		}else{
			//codigo de error
			//devuelvo el viejo
			return projects.get(i);
		}
	}
	
	//Devuelve todos los proyectos
	public List<itsProjects> getProjects(){
		return projects;
	}
	
	
	//Devuelve un proyecto particular
	public int getAproject(itsProjects nameproject){
		int indice = Collections.binarySearch(projects,nameproject,c); 
		return indice;
	}
	
	//Remover un proyecto 
	public void removeProject(itsProjects nameproject){
		int ind = this.getAproject(nameproject);
		projects.remove(ind);
	}
	
	public int getId(){return this.id;}
}
